home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
gnu
/
nethack.lha
/
nethack-3.1
/
include
/
macconf.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-25
|
8KB
|
289 lines
/* SCCS Id: @(#)macconf.h 3.1 91/07/14 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifdef MAC
# ifndef MACCONF_H
# define MACCONF_H
/*
* Select your compiler...
* This could probably be automagic later on - I believe there's
* a unique symbol for MPW at least (it's "macintosh")
*/
# define MAC_MPW32 /* Headers, and for avoiding a bug */
/* # define MAC_THINKC5 /* Maybe supported now ... */
# define RANDOM
# define NO_SIGNAL /* You wouldn't believe our signals ... */
# define FILENAME 256
# include "system.h"
typedef long off_t ;
/*
* Try and keep the number of files here to an ABSOLUTE minimum !
* include the relevant files in the relevant .c files instead !
*/
# include <segload.h>
# include <stdlib.h>
# include <windows.h>
# include <memory.h>
# include <quickdraw.h>
# include <events.h>
# include <controls.h>
# include <dialogs.h>
# include <fonts.h>
/*
* We could use the PSN under sys 7 here ...
*/
# define getpid() 1
# define getuid() 1
# define index strchr
# define rindex strrchr
# define Rand random
# define error progerror
# if defined(VISION_TABLES) && defined(BRACES)
# undef BRACES
# endif
/*
* macfile.c
* MAC file I/O routines
*/
extern int maccreat ( const char * name , long fileType ) ;
extern int macopen ( const char * name , int flags , long fileType ) ;
extern int macclose ( int fd ) ;
extern int macread ( int fd , void * ptr , unsigned ) ;
extern int macwrite ( int fd , void * ptr , unsigned ) ;
extern long macseek ( int fd , long pos , short whence ) ;
# if !defined(O_WRONLY)
# include <fcntl.h>
# endif
#if !defined(SPEC_LEV) && !defined(DGN_COMP)
# define creat maccreat
# define open macopen
# define close macclose
# define read macread
# define write macwrite
# define lseek macseek
#endif
# define TEXT_TYPE 'TEXT'
# define LEVL_TYPE 'LEVL'
# define BONE_TYPE 'BONE'
# define SAVE_TYPE 'SAVE'
# define PREF_TYPE 'PREF'
# define DATA_TYPE 'DATA'
# define MAC_CREATOR 'nh31' /* Registered with DTS ! */
typedef struct macdirs {
Str32 dataName ;
short dataRefNum ;
long dataDirID ;
Str32 saveName ;
short saveRefNum ;
long saveDirID ;
Str32 levelName ;
short levelRefNum ;
long levelDirID ;
} MacDirs ;
typedef struct macflags {
Bitfield ( processes , 1 ) ;
Bitfield ( color , 1 ) ;
Bitfield ( folders , 1 ) ;
Bitfield ( tempMem , 1 ) ;
Bitfield ( help , 1 ) ;
Bitfield ( fsSpec , 1 ) ;
Bitfield ( trueType , 1 ) ;
Bitfield ( aux , 1 ) ;
Bitfield ( alias , 1 ) ;
Bitfield ( standardFile , 1 ) ;
} MacFlags ;
extern MacDirs theDirs ;
extern MacFlags macFlags ;
/*
* Mac windows
*/
#define NUM_MACWINDOWS 15
#define TEXT_BLOCK 512L
#define WIN_BASE_RES 128
#define WIN_BASE_KIND 128
#define NUM_MENU_ITEMS 60 /* We've run out of letters by then ... */
#define CHAR_ENTER ((char)3)
#define CHAR_BS ((char)8)
#define CHAR_LF ((char)10)
#define CHAR_CR ((char)13)
#define CHAR_ESC ((char)27)
#define CHAR_BLANK ((char)32)
#define CHAR_DELETE ((char)127)
#define MAC_GRAPHICS_ENV
/* Window constants */
#define kMapWindow 0
#define kStatusWindow 1
#define kMessageWindow 2
#define kTextWindow 3
#define kMenuWindow 4
#define kLastWindowKind kMenuWindow
extern Boolean RetrievePosition ( short , short * , short * ) ;
extern Boolean RetrieveSize ( short , short , short , short * , short * ) ;
extern void SavePosition ( short , short , short ) ;
extern void SaveSize ( short , short , short ) ;
extern void SaveWindowPos ( WindowPtr ) ;
extern void SaveWindowSize ( WindowPtr ) ;
/*
* This determines the minimum logical line length in text windows
* That is; even if physical width is less, this is where line breaks
* go at the minimum. 350 is about right for score lines with a
* geneva 10 pt font.
*/
#define MIN_RIGHT 350
#define NUM_CANCEL_ITEMS 10
typedef struct NhWindow {
WindowPtr theWindow ;
short kind ;
void ( * keyFunc ) ( EventRecord * , WindowPtr ) ;
void ( * clickFunc ) ( EventRecord * , WindowPtr ) ;
void ( * updateFunc ) ( EventRecord * , WindowPtr ) ;
void ( * cursorFunc ) ( EventRecord * , WindowPtr , RgnHandle ) ;
Handle windowText ;
long windowTextLen ;
long textBase ;
Point cursor ; /* In CHARS / LINES */
short leading ;
short charHeight ;
short charWidth ;
short fontNum ;
short fontSize ;
short lin ; /* Used by menus */
short wid ; /* Used by menus */
char itemChars [ NUM_MENU_ITEMS ] ;
char cancelStr [ NUM_CANCEL_ITEMS ] ;
char cancelChar ;
char clear ;
char cursorDrawn ;
short scrollPos ;
ControlHandle scrollBar ;
} NhWindow ;
#define NUM_STAT_ROWS 2
#define NUM_ROWS 22
#define NUM_COLS 81 /* We shouldn't use column 0 */
typedef struct MapData {
char map [ NUM_ROWS ] [ NUM_COLS ] ;
} MapData ;
typedef struct StatusData {
char map [ NUM_STAT_ROWS ] [ NUM_COLS ] ;
} StatusData ;
extern NhWindow * theWindows ;
extern struct window_procs mac_procs ;
extern short text_wind_font;
#define set_text_wind_font(fnt) (text_wind_font = fnt)
#define mono_font() set_text_wind_font(monaco)
#define normal_font() set_text_wind_font(geneva)
#define E extern
/*
* Define PORT_HELP to be the name of the port-specfic help file.
* This file is included into the resource fork of the application.
*/
#define PORT_HELP "MacHelp"
E void NDECL(port_help);
E void NDECL(mac_init_nhwindows);
E void NDECL(mac_player_selection);
E void NDECL(mac_askname);
E void NDECL(mac_get_nh_event) ;
E void FDECL(mac_exit_nhwindows, (const char *));
E void FDECL(mac_suspend_nhwindows, (const char *));
E void NDECL(mac_resume_nhwindows);
E winid FDECL(mac_create_nhwindow, (int));
E void FDECL(mac_clear_nhwindow, (winid));
E void FDECL(mac_display_nhwindow, (winid, BOOLEAN_P));
E void FDECL(mac_destroy_nhwindow, (winid));
E void FDECL(mac_curs, (winid,int,int));
E void FDECL(mac_putstr, (winid, int, const char *));
E void FDECL(mac_display_file, (const char *, BOOLEAN_P));
E void FDECL(mac_start_menu, (winid));
E void FDECL(mac_add_menu, (winid, CHAR_P, int, const char *));
E void FDECL(mac_end_menu, (winid, CHAR_P, const char *, const char *));
E char FDECL(mac_select_menu, (winid));
E void NDECL(mac_update_inventory);
E void NDECL(mac_mark_synch);
E void NDECL(mac_wait_synch);
#ifdef CLIPPING
E void FDECL(mac_cliparound, (int, int));
#endif
E void FDECL(mac_print_glyph, (winid,XCHAR_P,XCHAR_P,int));
E void FDECL(mac_raw_print, (const char *));
E void FDECL(mac_raw_print_bold, (const char *));
E int NDECL(mac_nhgetch);
E int FDECL(mac_nh_poskey, (int *, int *, int *));
E void NDECL(mac_nhbell);
E int NDECL(mac_doprev_message);
E char FDECL(mac_yn_function, (const char *, const char *, CHAR_P));
E void FDECL(mac_getlin, (const char *,char *));
#ifdef COM_COMPL
E void FDECL(mac_get_ext_cmd, (char *));
#endif /* COM_COMPL */
E void FDECL(mac_number_pad, (int));
E void NDECL(mac_delay_output);
/* defined in macwin.c and exported for used in mmodal.c */
E void FDECL(HandleEvent, (EventRecord *));
/* defined in mmodal.c */
E DialogPtr FDECL(mv_get_new_dialog, (short));
E void FDECL(mv_close_dialog, (DialogPtr));
E void FDECL(mv_modal_dialog, (ModalFilterProcPtr, short *));
#undef E
extern void DimMenuBar ( void ) ;
extern void UndimMenuBar ( void ) ;
extern int SanePositions ( void ) ;
#define NHW_BASE 0
extern winid BASE_WINDOW , WIN_MAP , WIN_MESSAGE , WIN_INVEN , WIN_STATUS ;
extern Boolean itworked( short );
extern void mustwork( short );
extern void VDECL(progerror, (const char *,...));
extern void attemptingto( char * );
extern void pushattemptingto( char * );
extern void popattempt( void );
extern void UnloadAllSegments( void );
extern void InitSegMgmt( void * );
extern void IsResident ( void * );
extern void NotResident ( void * );
# endif /* ! MACCONF_H */
#endif /* MAC */